package com.afdor.rws.event;

import com.afdor.rws.annotation.extension.SPI;

/**
 * 数据序列化接口
 *
 * @author 悭梵
 * @date Created in 2018-08-03 17:42
 */
@SPI("jdk")
public interface Serialization<OUT> extends com.afdor.rws.serialize.Serialization<Event, OUT> {

    /**
     * 得到输出数据类型
     *
     * @return
     */
    Class<OUT> getOutClass();

    /**
     * 序列化类型
     *
     * @return
     */
    @Override
    String getContentType();

    /**
     * 事件对象序列化
     *
     * @param data
     * @return
     */
    @Override
    OUT serialize(Event data);

    /**
     * 事件对象反序列化
     *
     * @param data
     * @return
     */
    @Override
    Event unserialize(OUT data);
}
